package collection.list;

import java.util.Iterator;
import java.util.ListIterator;
import java.util.Vector;

/**
 * @author weim
 * @date 18-8-27
 *
 * 和ArrayList 一样
 * 唯一区别 ： 线程安全  synchronized
 *
 * 扩容原理
 * newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity); 扩容因子可以指定 否则扩容两倍
 * Arrays.copyOf(elementData, newCapacity);
 *
 *
 */
public class MyVector {

    public static void main(String[] args) {
        //默认创建大小为10的数组     也可以自己指定大小
        Vector<String> vector = new Vector<String>();

        vector.add("a");
        vector.add("b");
        vector.add("c");

        Iterator<String> iterator = vector.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
            //快速失败  在iterator遍历的时候，更改vector结构，会抛出ConcurrentModificationException异常
            //vector.add("f");
        }


        ListIterator<String> listIterator = vector.listIterator();
        listIterator.add("d");
        System.out.println(listIterator.nextIndex());
        while(listIterator.hasNext()) {
            System.out.println(listIterator.next());
        }

        System.out.println(vector);


    }
}
